/*
 * 提示条工具 (基于bootstrap)
 * version : "2.0 Beta",
 * auther : "陈 庭",
 *
 * Date: 2015-05-12
 *
 */
(function($) {
	$.yxTipbar = {
		initCss : function(options){
			/*默认显示配置及用户当前配置*/
			var defaults = {
				cssType : 1
			}
			var config = $.extend(defaults,options);
			
			// 动态加入皮肤样式(CSS)
			$("script").each(function () { 
				if(this.src.toString().match(/jquery\.yxTipbar.*?js$/)) { 
					// 创建样式表
					$("head").append("<link rel=\"stylesheet\" type=\"text/css\" href=\"" + this.src.toString().replace(/jquery\.yxTipbar.*?js$/, "") + "skin" + config.cssType + "/yxTipbar.css" + "\" id=\"yxTipbarCss\" />");
					return false; 
				}
			});
		},
		
		/* 显示提示条 */
		show : function(options){
			/*默认显示配置及用户当前配置*/
			var defaults = {
				msgTitle : '', // 标题
				msg : '', // 提示信息
				bgAlpha : 1, // 透明度
				closeBtn : true, // 是否可手动关闭,
				zIndex : 100,    // 层次
				msgType : 'info', // 提示类型，有 warning(警告), info(提示), success(成功), error(错误)
				//bgColor : '#9f9',  // 背景色
				closeEffect : true, // 是否滑动关闭
				autoClose : true,  // 是否自动关闭
				closeTime : 5000,  // 停留时间
				alertWin : false, //采用弹窗的方式显示提示信息
				confirmCallback : null	//确认窗口
			}
			var config = $.extend(defaults,options);
			
			// 关闭事件
			var closeFunc = function(closeTimer){
				if(config.closeEffect){
					$('#' + barId).fadeTo(400, 0, function () { // Links with the class "close" will close parent
						$('#' + barId).remove();
					});
				}else{
					$('#' + barId).remove();
				}
				if(closeTimer != null){
					clearTimeout(closeTimer);
				}
				
				return false;
			}
			
			// div 提示的 ID
			var barId = 'barDiv';
			var i = 1;
			for(; i < 100; i++){
				if($('#' + barId + i).length == 0){
					barId = barId + i;
					break;
				}
			}
			
			var barDiv = '';
			barDiv += '<div id="' + barId +'" class="alert alert-' + config.msgType + ' alert-dismissable" style="z-index:' + config.zIndex + ';position: absolute;">';
			//barDiv += '  ';
			//barDiv += '  <strong>Warning!</strong> ' + config.msg;
			if(config.alertWin){	//弹窗方式
				if(config.msgTitle != ''){
					barDiv += '  <h4>' + config.msgTitle + '</h4> ';
				}else{
					barDiv +='<h4>&nbsp;</h4>';
				}
				barDiv 	  += '<p>' + config.msg + '</p>';				
			}else{	//底部提示条方式
				if(config.msgTitle != ''){
					barDiv += '  <strong>' + config.msgTitle + '</strong> ';
				}
				barDiv 	  += config.msg;
			}
			barDiv += '</div>';

			$('body').append(barDiv);

			var timer = null;
			// 是否自动关闭
			if(config.autoClose){
				timer = setTimeout(function(){
					closeFunc(null);
				}, config.closeTime);
			}

			// 是否显示关闭按钮
			if(config.closeBtn){
				$('#' + barId).prepend('<button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>');
			}

			// 是否显示按钮
			if(config.alertWin){	//弹窗方式
				if(config.confirmCallback != null){	// confirm 确认回调函数
					var barDivBtn 	  = '<p><button type="button" id="' + barId +'_btn1" class="btn btn-success" > 确认 </button> &nbsp; ';
					barDivBtn += '<button type="button" id="' + barId +'_btn2" class="btn btn-default" > 取消 </button></p>';
					$('#' + barId).append(barDivBtn);

					$('#' + barId +'_btn1').click(function(){	//返回确认
						config.confirmCallback(true);
						closeFunc(null);
					});

					$('#' + barId +'_btn2').click(function(){	//返回取消
						config.confirmCallback(false);
						closeFunc(null);
					});
				}else{
					var barDivBtn 	  = '<p><button type="button" id="' + barId +'_btn" class="btn btn-success" > 确认 </button></p>';
					$('#' + barId).append(barDivBtn);
					$('#' + barId +'_btn').click(function(){
						closeFunc(null);
					});			
				}
			}
			
			// 设置背景透明度
			if(jQuery.browser.msie){
			   	$('#' + barId).css("filter", 'progid:DXImageTransform.Microsoft.Alpha(opacity='+config.bgAlpha*100+')');
			}else{
				$('#' + barId).css("opacity", config.bgAlpha);
			}

			// 定位
			if(config.alertWin){	//弹窗方式
				$('#' + barId).css({left:($(window).width() - $('#' + barId).outerWidth())/2,top:$(window).scrollTop() + ($(window).height() - $('#' + barId).outerHeight())/2});
			}else{
				$('#' + barId).css({left:($(window).width() - $('#' + barId).outerWidth())/2,top:$(window).height() + $(window).scrollTop() - ($('#' + barId).outerHeight() + 3) * i});
			}
		},
		
		confirm : function(msg, msgTitle, alertWin, confirmCallback){
			this.show({msg:msg, msgType:'info', msgTitle: msgTitle, alertWin: alertWin, confirmCallback: confirmCallback});
		},
		
		warning : function(msg, msgTitle, alertWin){
			this.show({msg:msg, msgType:'warning', msgTitle: msgTitle, alertWin: alertWin});
		},
		
		success : function(msg, msgTitle, alertWin){
			this.show({msg:msg, msgType:'success', msgTitle: msgTitle, alertWin: alertWin});
		},
		
		error : function(msg, msgTitle, alertWin){
			this.show({msg:msg, msgType:'danger', msgTitle: msgTitle, alertWin: alertWin});
		},

		info : function(msg, msgTitle, alertWin){
			this.show({msg:msg, msgType:'info', msgTitle: msgTitle, alertWin: alertWin});
		}
	}
})(jQuery);